#if CLIENT
using System.DHTML;
#endif

namespace Saltarelle.UI {
	public interface ISaltarelleUIService {
		string BlankImageUrl { get; }

#if CLIENT
		/// <summary>
		/// Registers a drop target.
		/// </summary>
		/// <param name="element">Element to register as a drop target.</param>
		/// <param name="handler">Saltarelle object to handle drag-drop events for the element.</param>
		void RegisterDropTarget(DOMElement element, IDropTarget handler);

		/// <summary>
		/// Unregister a previously registered drop target.
		/// </summary>
		/// <param name="element">Element to unregister.</param>
		void UnregisterDropTarget(DOMElement element);
		
		/// <summary>
		/// Makes an element draggable
		/// </summary>
		/// <param name="source">Object that handles the drag source events.</param>
		/// <param name="element">Element to make draggable.</param>
		/// <param name="data">Data that is associated with the element.</param>
		/// <param name="container">Element inside which the dragged element is contained.</param>
		void MakeDraggable(IDragSource source, DOMElement element, object data, DOMElement container);
		
		/// <summary>
		/// Removes draggability from an element.
		/// </summary>
		/// <param name="element">Element, previously registered with <see cref="MakeDraggable"/>, which is no longer draggable.</param>
		void RemoveDraggable(DOMElement element);
#endif
	}
}